# coding utf-8

import socket # 导入socket包
if __name__ == '__main__':
    # 创建socket套接字   AF_INET -> 采用IPv4 ；SOCK_STREAM -> 采用TCP传输协议
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 设置启用端口复用，当程序结束时，立即释放端口号
    server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
    # 绑定监听端口号
    server_socket.bind(("0.0.0.0", 9091))
    # 配置监听最大等待连接个数
    server_socket.listen(128)
    # 等待客户端建立连接请求，返回（conn，info），若无连接则会一直保持阻塞状态
    # 其中conn由service_socket接收，是与客户端建立连接的套接字
    # info由client_info接收，是客户端的地址与端口信息
    service_socket, client_info = server_socket.accept()
    print('客户端的IP地址和端口号：', client_info)
    # 获取客户端发送的原始数据
    _renv = service_socket.recv(1024)
    # 获取原始数据的长度
    _length = len(_renv)
    print('接收数据的长度为：', _length)
    # 对原始数据进行解码
    _decode = _renv.decode('utf-8')
    print('接收客户端的数据为：', _decode)
    # 准备需要返回的数据，使用UTF-8进行编码
    _data = '问题处理中...'.encode('utf-8')
    # 发送数据
    service_socket.send(_data)
    # 关闭服务端与客户端的套接字
    service_socket.close()
    # 关闭服务端套接字
    server_socket.close()